package cn.mjnxin.iot.connector.context;

import java.util.Collection;
import java.util.Map;

import cn.mjnxin.iot.base.cache.LocalCache;

/**
 * 连接端上下文
 * @author CLG 2023年10月10日
 * @version V1.0.0
 */
public interface IConnectorContext {
	public final static String PEER_ADDRESS  = "peerAddess"; // 对端地址
	
	/**
	 * 当前线程的PeerKey
	 * @return
	 */
	String currentPeerAddress();
	
	/**
	 * 获取对端地址列表
	 * @return
	 */
	Collection<String> peerAddressList();
	
	/**
	 * 获取对端地址，PID列表
	 * @return
	 */
	Map<String, Integer> peerLinkList();

	String getPeerAddress(String peerKey);
	
	boolean isInLink(String peerAddress, String peerKey);
	
	boolean isPeerCacheExists(String peerAddress);
	
	boolean isPeerLinkCacheExists(String peerAddress);
	
	/**
	 * 根据getPeerKey 返回的 peerKey 检索用户自定义数据
	 * @param peerAddress
	 * @return
	 */
	LocalCache getPeerCacheByAddress(String peerAddress);

	/**
	 * 根据peerAddress 存储对应的用户自定义数据
	 * @param peerAddress
	 * @param userData
	 */
	void addPeerData(String peerAddress, LocalCache userData);

	/**
	 * 获取所有用户自定义数据
	 * @return
	 */
	Collection<LocalCache> peerDataList();

	void clearPeerData();

	LocalCache getPeerLinkCache(String peerKey);

	String getGateAddress(String gateAddress);
}